160 X$=INKEY$:DEF SEG=64:POKE 23, (PEEK(23) OR 64):IF X$="A" OR X$="P" THEN FL$="EXPENSE.CUR":GOSUB 30210 ELSE IF X$="E" THEN FL$="EXPENSE.TOT":GOSUB 30210:FL$="CHECKING.ACC":GOSUB 30210:FL$="CHKDSC":GOSUB 30210
170 IF X$="A"THEN GOSUB 400 ELSE IF X$="R"THEN 1690 ELSE IF X$="P"THEN RUN "PAYROLL.BAS"ELSE IF X$="O"THEN 1120 ELSE IF X$="M"THEN RUN"BKPG.BAS"ELSE IF X$="E"THEN 2590 ELSE IF X$="F"THEN 6000 ELSE IF X$="C"THEN 7000 ELSE IF X$="I"THEN 4000 ELSE 160
180 IF LOF(1)/128<8 THEN 190 ELSE 210
190 BEEP: COLOR 31: PRINT "FILE NOT OPENED FOR MONTH": COLOR 7:PRINT:PRINT:GOTO 50
210 CLS:OPEN "PAYEE.FIL" AS 2
220 FIELD 1, 8 AS D$, 8 AS C$, 25 AS B$, 9 AS A$, 18 AS E$
230 PRINT TAB(10) "TO USE TODAY'S DATE PRESS ENTER
240 PRINT TAB(10) "TO SET DIFFERENT DATE ENTER DATE":PRINT TAB(10) "IF FINISHED ENTER F":PRINT " ";:INLN%=8:GOSUB 20050:ND$=INPT$:IF ND$="F" OR ND$="f" THEN CLS:GOTO 10
280 IF ND$="" THEN IF LEFT$(DATE$,1)>"0" THEN ND$=LEFT$(DATE$,6)+RIGHT$(DATE$,2) ELSE ND$=MID$(DATE$,2,5)+RIGHT$(DATE$,2)
290 GET 1, LOF(1)/128:PRINT TAB(40)"C=CHECK EXPENSE":PRINT TAB(40) "N=NON-CHECK EXPENSE"
296 X$=INKEY$:IF X$="C" OR X$="c" THEN 300 ELSE IF X$="N" OR X$="n" THEN CHECK%=0:GOTO 311 ELSE 296
300 CODE%=LOF(1)/128:IF CODE%=9 THEN GET 1,1:CHECK%=CVI(F$):GOTO 320
310 IF CODE%>9 THEN CHECK%=CVI(C$)+1:GOTO 320
311 FOR N=2 TO 9:GET 1,N:IF LEFT$(D$,2)=" " THEN CODE%=N:GOTO 330
314 NEXT:PRINT "NO MORE RECORD SPACE AVAILABLE FOR NON-CHECK EXPENSES, HOLD UNTIL NEXT MONTH OR USE REVISE TO COMBINE WITH ANOTHER NON-CHECK EXPENSE. PRESS F8 TO RETURN TO OPTIONS."
316 X$=INKEY$:IF X$="@" THEN 10 ELSE 316
320 CODE%=CODE%+1:ADR$=""
330 PRINT:PRINT TAB(42) "PAY TO ";:INLN%=25:GOSUB 20050:PAY$=INPT$:IF LEN(PAY$)<4 THEN 1450
350 PRINT " AMOUNT PAID (USE DECIMAL POINT e.g. 000.00) ";:NBR=1:INLN%=9:GOSUB 20050:AM=VAL(INPT$):NBR=0
360 IF X$="N" OR X$="n" THEN PRINT " FOR "; ELSE PRINT "FOR (IF MORE THEN ONE TYPE OF EXPENSE ENTER *)? ";
361 INLN%=18:GOSUB 20050:EP$=INPT$:PRINT:IF EP$="*" THEN GOTO 490
380 GOSUB 900:GOTO 1020
400 CLS
410 GET 1, 1:FIELD 1, 10 AS M$, 5 AS Y$, 34 AS S$, 6 AS F$:FOR I=2 TO LOF(1)/128:CODE%=I:GET 1, CODE%:FIELD 1, 8 AS D$, 8 AS C$, 25 AS B$, 9 AS A$, 18 AS E$:NEXT:RETURN
490 ZM=AM:FIELD 1, 8 AS D$, 8 AS C$, 25 AS B$, 9 AS A$, 18 AS E$:CD%=CODE%:AM=0:FIELD 1, 8 AS D$, 8 AS C$, 25 AS B$, 9 AS A$, 18 AS E$:FOR I=1 TO 3:CODE%=CODE%+1
620 IF I=1 THEN PRINT "AMOUNT OF 1ST TYPE ";ELSE IF I=2 THEN PRINT "AMOUNT OF 2ND TYPE ";ELSE PRINT "AMOUNT OF 3RD TYPE (ENTER 0 IF DONE) ";
622 NBR=1:INLN%=9:GOSUB 20050:AM(I)=VAL(INPT$):NBR=0:IF AM(I)=0 THEN CODE%=CODE%-1:GOTO 730
640 PRINT TAB(34) "FOR ";:INLN%=18:GOSUB 20050:EP$(I)=INPT$:ZA=ZA+AM(I):NEXT I
730 IF ABS(ZM-ZA)<0.005 THEN 765
740 BEEP: BEEP: COLOR 0,7: PRINT "TOTAL OF AMOUNTS DOES NOT EQUAL CHECK AMOUNT-REDO": COLOR 7,0:CODE%=CD%:AM=0:ZA=0:ZM=0:FOR I=1 TO 3:AM(I)=0:EP$(I)="":NEXT:GOTO 330
760 FIELD 1, 8 AS D$, 8 AS C$, 25 AS B$, 9 AS A$, 18 AS E$
765 PRINT:PRINT TAB(10) "P=PRINT CHECK AND ENTER DATA":PRINT:PRINT TAB(10) "E=ENTER DATA ONLY":PRINT
767 PE$=INKEY$:IF PE$=CHR$(27) THEN 10 ELSE IF PE$<>"P" AND PE$<>"E" THEN 767
880 PRINT " AMOUNT PAID (USE DECIMAL POINT e.g. 000.00) ";:NBR=1:INLN%=9:GOSUB 20050:AM=VAL(INPT$):NBR=0:GOSUB 900: GOTO 1020
900 LSET D$=ND$:LSET C$=MKI$(CHECK%):LSET B$=PAY$:LSET A$=MKD$(AM):LSET E$=EP$:IF SKIP=1 THEN 1010
960 PRINT D$;:PRINT USING "#######"; CVI(C$);:PRINT " "+B$;:PRINT USING "$$#####.##"; CVD(A$);:PRINT " "+E$
1010 SKIP=0: RETURN
1020 PRINT:IF X$="C" OR X$="c" THEN PRINT TAB(10) "PRESS P TO PRINT CHECK AND ENTER DATA"
1030 PRINT TAB(10) "PRESS C TO CHANGE ENTRY":PRINT TAB(10) "PRESS E TO ENTER DATA"
1050 X$=INKEY$:DEF SEG=64:POKE 23, (PEEK(23) OR 64):IF X$="P" THEN GOSUB 5000:GOTO 1090 ELSE IF X$="C" THEN 230 ELSE IF X$="E" THEN 1090 ELSE IF X$=CHR$(27) THEN 50 ELSE 1050
1120 CLS: GOSUB 410:IF CVI(F$)>0 THEN 1140 ELSE 1160
1140 BEEP:COLOR 31: PRINT "FILE ALREADY OPENED THIS MONTH OR LAST MONTHS FILE NOT CLOSED OUT": COLOR 7:GOTO 50
1160 PRINT " MONTH ";:GOSUB 20050:MON$=INPT$:PRINT " YEAR ";:NBR=1:INLN%=5:GOSUB 20050:YR=VAL(INPT$):PRINT "NUMBER OF FIRST CHECK ";:INLN%=6:GOSUB 20050:FCHECK%=VAL(INPT$):NBR=0:CODE%=1
1200 FIELD 1, 10 AS M$, 5 AS Y$, 34 AS S$, 6 AS F$:LSET M$=MON$:LSET Y$=MKI$(YR):LSET S$=" EXPENSE FILE FIRST CHECK #":LSET F$=MKI$(FCHECK%):PUT 1, 1:FOR CODE%=1 TO 9:ND$="":CHECK%=0:PAY$="":AM=0:EP$="":LSET D$=ND$:LSET C$=MKI$(CHECK%)
1290 LSET B$=PAY$:LSET A$=MKD$(AM):LSET E$=EP$:FIELD 1, 8 AS D$, 8 AS C$, 25 AS B$, 9 AS A$, 18 AS E$:PUT 1, CODE%:NEXT:GOTO 50
1450 FIELD 2, 5 AS F$, 35 AS G$, 35 AS H$, 35 AS I$, 16 AS J$:FOR N=1 TO LOF(2)/128:GET 2,N:IF PAY$=LEFT$(F$,3) THEN PAY$=G$:ADR$=H$:CITY$=I$:EP$=J$:GOTO 880
1490 NEXT:PRINT " ABBREVIATION NOT FOUND. USE 4 OR MORE LETTERS FOR PAYEE OR CHECK ABBREVIATION":GOTO 330
1690 CLS:PRINT:PRINT TAB(10) "R=READ ONLY":PRINT:PRINT TAB(10) "P=READ AND PRINT"
1693 PRT$=INKEY$:DEF SEG=64:POKE 23, (PEEK(23) OR 64):IF PRT$<>"P" AND PRT$<>"R" THEN 1693 ELSE CLS
1700 COLOR 0,7: PRINT " PRESS F8 TO READ RECORDS IN SEQUENCE. PRESS F7 TO STOP AT ANY POINT. PRESS F8 WHEN READY TO CONTINUE READING.":COLOR 7,0: PRINT:PRINT
1710 COLOR 0,7:PRINT " IF REVISING FILE, WRITE DOWN RECORD NUMBERS TO BE CHANGED.": PRINT:PRINT
1740 PRINT "DATE CHECK PAID TO AMOUNT FOR REC":PRINT:IF LOF(1)/128=0 THEN PRINT " NO RECORDS IN FILE---PRESS F8 TO RETURN TO OPTIONS" ELSE 1750
1746 X$=INKEY$:IF X$<>"@" THEN 1746 ELSE CLS:GOTO 50
1750 GET 1, 1:FIELD 1, 10 AS M$,5 AS Y$, 34 AS S$, 6 AS F$:T=0:FOR I=2 TO LOF(1)/128:CODE%=I:GET 1, CODE%:FIELD 1, 8 AS D$, 8 AS C$, 25 AS B$, 9 AS A$, 18 AS E$:EP=ASC(E$):IF EP=42 THEN 1900
1880 IF EP=32 AND D$=" " AND CVD(A$)<0.01 THEN 1980
1890 T=T+CVD(A$)
1900 PRINT D$;:PRINT USING "#######";CVI(C$);:PRINT " "+B$;:IF EP=42 THEN PRINT USING"**######.##";CVD(A$); ELSE PRINT USING " $$#####.##";CVD(A$);
1940 IF EP=42 THEN PRINT E$+" "; ELSE PRINT " "+E$;
1950 PRINT CODE%:IF CODE% MOD 20=0 THEN 1970 ELSE 1980
1970 PRINT:PRINT "DATE CHECK PAID TO AMOUNT FOR REC":PRINT
1980 NEXT:PRINT: PRINT:PRINT "TOTAL PAID OUT THROUGH CHECK NO. ";CVI(C$);" ";D$;" IS";:PRINT USING DL$;T:PRINT:PRINT:PRINT:IF PRT$="P" THEN 2590
2027 IF OLD% THEN KEY(7) OFF:PRINT:PRINT " PRESS F8 TO RETURN TO OPTIONS":GOTO 2028 ELSE 2030
2028 X$=INKEY$:IF X$<>"@" THEN 2028 ELSE CLS:GOTO 10
2030 PRINT TAB(10) "R=REVISE":PRINT:PRINT TAB(10) "O=RETURN TO OPTIONS":PRINT:PRINT TAB(10) "M=RETURN TO MENU":KEY(7) OFF
2040 X$=INKEY$:DEF SEG=64:POKE 23, (PEEK(23) OR 64):IF X$="R" THEN FL$="EXPENSE.CUR":GOSUB 30210:GOTO 2340 ELSE IF X$="O" THEN CLS:GOTO 10 ELSE IF X$="M" THEN RUN "BKPG.BAS" ELSE 2040
2060 FOR N=1 TO LOF(3)/128:GET 3, N:INS(1)=INSTR(L$,CHR$(44)):INS(2)=INSTR(INS(1)+2,L$,CHR$(44)):INS(3)=INSTR(INS(2)+2,L$,CHR$(44))
2110 IF LEFT$(EP$,3)=LEFT$(L$,3) OR LEFT$(EP$,3)=MID$(L$,INS(1)+2,3) OR LEFT$(EP$,3)=MID$(L$,INS(2)+2,3) OR LEFT$(EP$,3)=MID$(L$,INS(3)+2,3) THEN RETURN
2120 NEXT:LST=N:RETURN
2340 CLS
2350 PRINT:PRINT "RECORD NUMBER ";:NBR=1:INLN%=6:GOSUB 20050:CODE%=VAL(INPT$):GET 1, CODE%:COLOR 0,7:FIELD 1, 8 AS D$, 8 AS C$, 25 AS B$, 9 AS A$, 18 AS E$:GOSUB 960:PRINT TAB(76) CODE%: COLOR 7,0:PRINT "DATE ";:INLN%=8:GOSUB 20050:ND$=INPT$
2410 PRINT "CHECK NUMBER (ENTER 0 IF NON-CHECK EXPENSE) ";:INLN%=8:NBR=1:GOSUB 20050:CHECK%=VAL(INPT$):PRINT "AMOUNT ";:INLN%=9:GOSUB 20050:AM=VAL(INPT$):NBR=0:IF AM=0 THEN EP$="VOID":PAY$="": GOTO 2480
2440 PRINT "PAY TO (NO ABBREVIATIONS) ";:INLN%=25:GOSUB 20050:PAY$=INPT$:PRINT "FOR ";:INLN%=18:GOSUB 20050:EP$=INPT$:PRINT:PRINT:PRINT:PRINT
2480 GOSUB 900:PRINT TAB(10) "C=DATA IS CORRECT":PRINT:PRINT TAB(10) "N=DATA IS NOT CORRECT"
2500 X$=INKEY$:IF X$="C" THEN 2510 ELSE IF X$="N" THEN 2340 ELSE DEF SEG=64:POKE 23, (PEEK(23) OR 64):GOTO 2500
2510 PUT 1, CODE%:PRINT:PRINT " A=REVISE ANOTHER" TAB(89) "R=READ FILE" TAB(89) "O=RETURN TO OPTIONS" TAB(89) "M=RETURN TO MENU"
2570 X$=INKEY$:IF X$="A" THEN 2350 ELSE IF X$="R" THEN GOTO 1690 ELSE IF X$="M" THEN RUN"BKPG.BAS" ELSE IF X$="O" THEN CLS:GOTO 10 ELSE GOTO 2570
2590 DIM TE(30), YTD(30):DIM MIS$(30):FIELD 1, 8 AS D$:GET 1, LOF(1)/128:CLS:PRINT:PRINT TAB(10) "DATE OF LAST ENTRY IN FILE IS "+D$:PRINT:PRINT TAB(10) "C=CONTINUE":PRINT:PRINT TAB(10) "O=RETURN TO OPTIONS"
2605 DEF SEG=64:POKE 23, (PEEK(23) OR 64)
2606 X$=INKEY$:IF X$="O" THEN 10 ELSE IF X$<>"C" THEN 2606
2610 EM=1
2620 CLS:LOCATE 12,23:PRINT "PLEASE WAIT FOR NEXT INSTRUCTIONS.":GET 1,1:FIELD 1, 10 AS M$, 5 AS Y$, 34 AS S$, 6 AS F$:LPRINT CHR$(18):LPRINT MODE$:LPRINT M$;:LPRINT CVI(Y$);:LPRINT S$;:LPRINT CVI(F$):LPRINT:LPRINT
2710 LPRINT "DATE CK.NO. PAID TO AMT. FOR REC.NO.":LPRINT XMOD$:T=0:OPEN "CATEGORY.FIL" AS 3:FIELD 3, 44 AS L$:FOR I=2 TO LOF(1)/128:CODE%=I:GET 1, CODE%:FIELD 1, 8 AS D$, 8 AS C$, 25 AS B$, 9 AS A$, 18 AS E$
2770 EP=ASC(E$):IF EP=42 THEN 2850
2790 IF EP=32 AND D$=" " AND CVD(A$)<0.01 THEN 2910
2800 T=T+CVD(A$):EP$=E$:GOSUB 2060:IF LEFT$(EP$,3)="VOI" THEN 2840
2830 IF N=LST THEN GOSUB 3720
2840 TE(N)=TE(N)+CVD(A$)
2850 LPRINT D$;:LPRINT USING "#######";CVI(C$);:LPRINT " "B$;:IF EP=42 THEN LPRINT USING"**######.##";CVD(A$); ELSE LPRINT USING DL$;CVD(A$);
2890 IF EP=42 THEN LPRINT E$+" "; ELSE LPRINT " "+E$;
2900 LPRINT USING"###";CODE%
2910 NEXT:IF PRT$="P" THEN LPRINT:LPRINT "TOTAL PAID OUT THROUGH CHECK NO. ";CVI(C$);" "D$;" IS";USING DL$;T:LPRINT CHR$(12):GOTO 2027
2920 LPRINT TAB(45) "___________":LPRINT TAB(10) " TOTAL PAID OUT THIS MONTH IS ";:LPRINT USING "$$######.##";T:CLS:PRINT "CHECK PRINTED PAGE TO BE SURE IT IS CORRECT. FILE WILL BE REMOVED FROM CURRENT STATUS WHEN PROGRAM CONTINUES.":PRINT
2960 X$=INKEY$:DEF SEG=64:POKE 23, (PEEK(23) OR 64):IF X$="P" THEN CLEAR,,5120:OPEN "B:EXPENSE.CUR" AS 1 :GOTO 2620 ELSE IF X$="R" THEN GOTO 3500 ELSE IF X$="C" THEN 2980 ELSE 2960
2980 GET 1,1:LPRINT CHR$(12);:LPRINT MODE$:LPRINT " EXPENSES ";:LPRINT M$;:LPRINT CVI(Y$);:LPRINT " YTD REC.NO.":LPRINT XMOD$:IF SKIP=1 THEN 3120
3040 OPEN "B:EXPENSE.TOT" AS 2
3050 IF LOF(2)/128>1 THEN 3120
3060 FIELD 2, 12 AS Q$
3070 FOR N=1 TO 31:LSET Q$=MKD$(0):PUT 2,N:NEXT
3120 LPRINT:FOR N=1 TO LOF(3)/128+1:CODE%=N:GET 2, CODE%:FIELD 2, 12 AS Q$:IF N>LOF(3)/128 THEN LPRINT "MISCELLANEOUS ";:GOTO 3220
3180 GET 3, N:IF LEN(L$)<2 THEN 3330 ELSE LPRINT L$;
3220 LPRINT USING "$$######.##";TE(N);:IF SKIP=1 THEN 3270
3270 LPRINT USING "$$#########.##";YTD(N);:LPRINT USING "########";CODE%:IF SKIP=1 THEN 3330
3300 FIELD 2, 12 AS Q$:LSET Q$=MKD$(YTD(N)):PUT 2, CODE%
3330 NEXT:FIELD 2, 12 AS Z$:LSET Z$=MKD$(TY):PUT 2, 31:IF SKIP=1 THEN SKIP=0:GOTO 3380
3371 CLOSE 4:BKUP=0:OPEN "B:CHECKING.ACC" AS 4:FIELD 4, 12 AS ZZ$:LSET ZZ$=MKD$(TOT):PUT 4, 2:CLOSE 4
3380 LPRINT TAB(45) "___________ ____________":LPRINT TAB(23) "TOTAL PAID OUT";:LPRINT TAB(45) USING DL$;TOT;:LPRINT USING "$$#########.##";TY:GOSUB 3760:LPRINT CHR$(12)+CHR$(27)CHR$(64)
3460 PUT 2, 31:FL$="EXPENSE."+LEFT$(M$,3):GOSUB 30210:CLOSE 1:NAME "B:EXPENSE.CUR" AS "B:"+FL$
3490 RUN "BKPG.BAS"
3500 CLS:FOR N=1 TO LST:TE(N)=0:NEXT:PRINT "AFTER REVISING FILE, RETURN TO OPTIONS AND START END OF MONTH AGAIN. PRESS F8 TO CONTINUE"
3530 X$=INKEY$:IF X$<>"@" THEN 3530
3540 GOTO 2340
3720 J=J+1:MIS$(J)=EP$:MIS(J)=CVD(A$):RETURN
3760 LPRINT:LPRINT:LPRINT MODE$:LPRINT TAB(20) "SUMMARY OF MISCELLANEOUS EXPENSES":LPRINT:LPRINT XMOD$:FOR J=1 TO 10:IF MIS(1)=0 THEN LPRINT TAB(10) "NONE": GOTO 3830
3790 IF MIS$(J)="" AND MIS(J)=0 THEN 3830 ELSE 3800
3800 LPRINT TAB(10) MIS$(J)+" ";:LPRINT USING DL$;MIS(J):NEXT
3830 RETURN
4000 CLS:OLD%=1:COLOR 0,7:PRINT" INSERT DISK CONTAINING THE FILE YOU WISH TO READ IN DRIVE B":COLOR 7,0:PRINT:PRINT:PRINT "ENTER MONTH OF EXPENSE FILE TO BE READ ";
4040 INLN%=10:GOSUB 20050:OMON$=INPT$
4070 FILE$="B:"+"EXPENSE."+LEFT$(OMON$,3):CLOSE 1:OPEN FILE$ AS 1:GOTO 1690
5000 CLS:LPRINT CHR$(27)CHR$(64):PRINT TAB(10) "N=NO MESSAGE ON CHECK STUB":PRINT:PRINT TAB(10)"I=INVOICE AND CREDIT TYPE MESSAGE":PRINT:PRINT TAB(10)"S=MISCELLANEOUS MESSAGE"
5007 X$=INKEY$:DEF SEG=64:POKE 23, (PEEK(23) OR 64):DEF SEG=64:POKE 23, (PEEK(23) AND 223):IF X$="N" THEN FOR J=1 TO 12:LPRINT:NEXT:GOTO 5021 ELSE IF X$="I" OR X$="S" THEN 5011 ELSE 5007
5011 CLS:PRINT "TYPE MESSAGE BETWEEN THE LINES IN ANY WAY THAT YOU WOULD LIKE IT PRINTED.":PRINT:PRINT "USE CURSOR KEYS TO MOVE AROUND.":LOCATE 5,1:PRINT STRING$(80,CHR$(22))
5014 IF X$="I" THEN LOCATE 6,1:PRINT "DATE INVOICE NUMBER AMOUNT ---- DATE INVOICE NUMBER AMOUNT "
5015 LOCATE 18,1:PRINT STRING$(80,CHR$(22)):LOCATE 19,20:PRINT "PRESS ENTER WHEN READY TO CONTINUE":IF X$="I" THEN LOCATE 7,1 ELSE LOCATE 6,1
5016 LINE INPUT X$:FOR N=6 TO 17:FOR J=1 TO 80:LPRINT CHR$(SCREEN(N,J));:NEXT J:NEXT
5021 CLS:IF ADR$<>"" THEN 5060 ELSE PRINT:PRINT TAB(13) "IF NO ADDRESS TO BE PRINTED --- JUST PRESS ENTER"
5023 PRINT:PRINT TAB(15) "TO PRINT ADDRESS OF PAYEE --- ENTER STREET ADDRESS OR BOX NO.":PRINT:PRINT TAB(35);:INLN%=40:GOSUB 20050:ADR$=INPT$:IF ADR$="" THEN CITY$="":GOTO 5060
5040 PRINT TAB(16) "CITY, STATE ZIP ";:INLN%=40:GOSUB 20050:CITY$=INPT$
5060 FOR N=1 TO 11:LPRINT:NEXT:LPRINT CHR$(27)CHR$(69)+CHR$(27)CHR$(71):LPRINT TAB(53) ND$+" "+CHR$(14);:LPRINT USING "**$###.##";AM:LPRINT:LPRINT:IF ADR$="" THEN LPRINT TAB(7) PAY$:LPRINT:LPRINT:LPRINT CHR$(27)CHR$(64):GOTO 5110
5110 FOR N=1 TO 10:LPRINT:NEXT:ADR$="":ADD$="":CITY$="":MES$="":RETURN
6000 CLS:OPEN "A:PAYEE.FIL" AS 2
6020 FIELD 2, 5 AS F$, 35 AS G$, 35 AS H$, 35 AS I$, 16 AS J$
6025 IF CAT=1 THEN PRINT TAB(15) "CATEGORY OF EXPENSE FILE":PRINT ELSE PRINT TAB(15) "PAYEE FILE":PRINT
6030 PRINT TAB(10) "A=ADD TO OR START FILE":PRINT:PRINT TAB(10) "R=READ, REVISE, OR PRINT FILE":PRINT:PRINT TAB(10) "F=ALPHABETIZE FILE":PRINT:PRINT TAB(10) "O=RETURN TO OPTIONS":PRINT:PRINT TAB(10) "M=RETURN TO MENU":SKIP=0
6040 X$=INKEY$:DEF SEG=64:POKE 23, (PEEK(23) OR 64):IF X$="A" THEN 6060 ELSE IF X$="R" THEN 6200 ELSE IF X$="F" THEN 50000 ELSE IF X$="O" THEN CLS:GOTO 10 ELSE IF X$="M" THEN RUN "BKPG.BAS" ELSE 6040
6060 N=LOF(2)/128
6062 IF CAT THEN GOSUB 7040:GOTO 6062
6065 GOSUB 6070:GOTO 6065
6070 N=N+1
6080 PRINT " 3 LETTER ABBREVIATION FOR PAYEE (IF FINISHED ENTER F) ";:INLN%=3:GOSUB 20050:ABB$=INPT$:IF ABB$="F" THEN 6030
6095 IF LEN(ABB$)<>3 THEN COLOR 0,7:PRINT " ABBREVIATION MUST BE 3 LETTERS--REENTER ":COLOR 7,0:GOTO 6080
6100 PRINT "PAYEE ";:INLN%=35:GOSUB 20050:PAY$=INPT$:PRINT "STREET ADDRESS OR BOX NO. ";:INLN%=35:GOSUB 20050:ADR$=INPT$:PRINT "CITY, STATE ZIP ";:INLN%=35:GOSUB 20050:CITY$=INPT$:PRINT "TYPE OF EXPENSE ";:INLN%=16:GOSUB 20050:EP$=INPT$:LSET F$=ABB$
6200 CLS:PRINT:PRINT TAB(10) "R=READ ONLY":PRINT:PRINT TAB(10) "P=READ AND PRINT"
6220 PRT$=INKEY$:IF PRT$="P" OR PRT$="R" THEN CLS:GOTO 6230 ELSE 6220
6230 COLOR 0,7: PRINT " PRESS F8 TO READ RECORDS IN SEQUENCE.":PRINT"PRESS AGAIN TO CONTINUE READING AFTER EACH STOP.":PRINT" PRESS ESCAPE TO RETURN TO OPTIONS.":COLOR 7,0: PRINT:PRINT
6240 COLOR 0,7:PRINT " IF REVISING FILE, WRITE DOWN RECORD NUMBERS TO BE CHANGED. IF THERE IS A RECORD NO LONGER USED, IT CAN BE REPLACED BY USING ITS RECORD NUMBER FOR A NEW ENTRY": PRINT:PRINT
6250 X$=INKEY$:IF X$<>"@" THEN 6250 ELSE COLOR 7,0:DEF SEG:POKE 106,0
6265 IF PRT$="P" THEN LPRINT CHR$(15)+CHR$(27)CHR$(78)CHR$(6):WIDTH "LPT1:", 132
6266 IF PRT$="P" AND CAT=1 THEN LPRINT CHR$(27)CHR$(45)CHR$(1):LPRINT TAB(40) "CATEGORY OF EXPENSE FILE "+DATE$:LPRINT CHR$(27)CHR$(45)CHR$(0)
6267 IF PRT$="P" AND CAT=0 THEN LPRINT CHR$(27)CHR$(45)CHR$(1):LPRINT TAB(50) "PAYEE FILE "+DATE$:LPRINT CHR$(27)CHR$(45)CHR$(0)
6270 FOR N=1 TO LOF(2)/128:GET 2, N:IF CAT THEN 7140
6407 RX$=INKEY$:IF RX$=CHR$(27) THEN CLS:GOTO 6020 ELSE IF RX$<>"@" THEN 6407
6410 NEXT:IF PRT$="P" THEN LPRINT CHR$(27)CHR$(64)+CHR$(12)
6420 PRINT TAB(10) "R=REVISE FILE": PRINT TAB(10) "O=RETURN TO OPTIONS FOR THIS FILE"
6430 X$=INKEY$:DEF SEG=64:POKE 23, (PEEK(23) OR 64):IF X$="R" THEN 6450 ELSE IF X$="O" THEN CLS:PRINT:PRINT:GOTO 6025 ELSE 6430
6450 PRINT "RECORD NUMBER TO BE CHANGED OR REPLACED ";:NBR=1:GOSUB 20050:N=VAL(INPT$):NBR=0:IF CAT THEN CLS:GOSUB 7050 ELSE GOSUB 6080
6470 PRINT:PRINT "REVISE ANOTHER? Y OR N";
6475 X$=INKEY$:DEF SEG=64:POKE 23, (PEEK(23) OR 64):IF X$="Y" THEN 6450 ELSE IF X$="N" THEN CLS:PRINT:PRINT:GOTO 6025 ELSE 6475 EDIT 7005
7000 CLS:CAT=1:OPEN "A:CATEGORY.FIL" AS 2:FIELD 2, 44 AS L$:GOTO 6025
7040 N=N+1:IF SKIP THEN 7090
7045 IF LOF(2)/128>27 THEN PRINT "NO MORE CATEGORIES MAY BE ADDED":GOTO 6030
7050 CLS:PRINT "1. THERE IS A LIMIT OF 28 CATEGORIES.":PRINT "2. THE FIRST 3 LETTERS OF A CATEGORY MAY NOT BE THE SAME AS THE FIRST 3 LETTERS OF ANY OTHER."
7060 PRINT "3. EACH CATEGORY MAY BE SINGLE OR MADE UP OF UP TO 4 TYPES OF EXPENSE. THESE TYPES WILL BE COMPILED BY THE EXPENSE PROGRAM UNDER THIS CATEGORY.
7070 PRINT "4. IF THERE IS MORE THAN 1 TYPE OF EXPENSE IN A CATEGORY THEN:"TAB(5)" THERE MUST BE A COMMA AND A SPACE BETWEEN TYPES OF EXPENSE."
9010 IF X$<>"@" THEN 9000 ELSE DEF SEG:POKE 106,0:KEY(7) ON:RETURN
10000 CLS:IF ERR=71 THEN COLOR 0,7:PRINT " FILE DISK NOT IN DRIVE B OR PROGRAM DISK NOT IN DRIVE A OR DOOR IS OPEN.":PRINT:PRINT" CORRECT PROBLEM AND PRESS F8 WHEN READY. ":GOTO 10050
10010 IF ERR=24 OR ERR=27 THEN COLOR 0,7:PRINT " PRINTER NOT ON OR OUT OF PAPER. SET TOP OF PAGE AND TURN ON PRINTER. PRESS F8 WHEN READY. ":GOTO 10050
10020 IF ERR=210 THEN DEF SEG=64:POKE 23, (PEEK(23) OR 64):RESUME
10030 IF ERR=53 THEN COLOR 0,7:PRINT " FILE NOT FOUND ":PRINT:PRINT " INSERT DISK CONTAINING FILE AND PRESS F8 WHEN READY .":GOTO 10050
10040 COLOR 0,7:PRINT "AN UNIDENTIFIED ERROR HAS OCCURRED":PRINT:PRINT "PRESS F8 TO RETURN TO OPTIONS":COLOR 7,0
10045 X$=INKEY$:IF X$<>"@" THEN 10045 ELSE 10
10050 X$=INKEY$:IF X$<>"@" THEN 10050 ELSE COLOR 7,0:CLS:DEF SEG:POKE 106,0:RESUME
20050 INPT$="":INPOS%=POS(0):DEF SEG=64:POKE 23, (PEEK(23) OR 64):POKE 23, (PEEK(23) OR 32):LOCATE,,1,6,7:IF INLN%=0 THEN INLN%=10
20110 IP$=INKEY$:IF IP$="" THEN 20110
20130 IF NBR THEN IF ASC(IP$)>57 THEN BEEP:GOTO 20110
20140 IF NBR THEN IF ASC(IP$)<48 AND ASC(IP$)<>46 THEN IF ASC(IP$)<>8 AND ASC(IP$)<>13 THEN IF ASC(IP$)<>45 THEN BEEP:GOTO 20110
20150 IF ASC(IP$)=29 THEN BEEP:GOTO 20110
20155 IF ASC(IP$)=27 THEN 10
20160 IP$=CHR$(ASC(IP$)+32*(IP$>="a" AND IP$<="z")):IF LEN(INPT$)=INLN% THEN IF ASC(IP$)<>13 AND ASC(IP$)<>8 THEN 20110
50120 FOR N=1 TO COUNT%:GET 2,N:DIRLST$(N-1)=AA$:NEXT:DEF SEG=LD.ADDR:CALL SHELLSRT(SEQ$,COUNT%,DIRLST$(0)):FOR N=0 TO COUNT%-1:PRINT DIRLST$(N):LSET AA$=DIRLST$(N):PUT 2, N+1:NEXT:PRINT:PRINT TAB(10) "PRESS F8 TO RETURN TO OPTIONS"
50240 MU$=INKEY$:IF MU$<>"@" THEN 50240 ELSE CLS:GOTO 10
60000 TRUE%=-1:FALSE%=0:LDOUT%=FALSE%:GOSUB 60180:GOSUB 60230:GOSUB 60270:IF NOT LDOUT% THEN 60130